//#include <algorithm>
//#include <iostream>
//#include <vector>
//
//#include <boost/range/algorithm/copy.hpp>
//#include <boost/range/algorithm_ext/copy_n.hpp>
//#include <boost/assign.hpp>
//
////#include <boost/range/adaptor/sliced.hpp>
//#include "bounded.hpp"
//
//
//int main(int argc, const char* argv[])
//{
//    using namespace boost::adaptors;
//    using namespace boost::assign;
//
//    std::vector<int> input;
//    input += 1,2,3,4,5,6,7,8,9;
//
//	////auto range = input | indexed(2);
//	//auto range = boost::make_iterator_range(input.begin()+3, input.end()) | indexed(2);
//	//auto it = boost::begin(range);
//
//	auto range  = input | bounded(2);
//	auto it = boost::begin(range);
//	auto end = boost::end(range);
//
//
//	it--;
//
//	for ( ; it != end; ++it )
//	{
//		std::cout << *it << std::endl;
//	}
//	std::cout << *it << std::endl;
//	
//
//
// //   boost::copy( input | bounded(0), std::ostream_iterator<int>(std::cout, ",")); 
//	//std::cout << std::endl;
// //   boost::copy( input | bounded(1), std::ostream_iterator<int>(std::cout, ","));
//	//std::cout << std::endl;
// //   boost::copy( input | bounded(2), std::ostream_iterator<int>(std::cout, ",")); 
//	//std::cout << std::endl;
//
// //   boost::copy( input | bounded(8), std::ostream_iterator<int>(std::cout, ","));
//	//std::cout << std::endl;
//
//	//boost::copy( input | bounded(9), std::ostream_iterator<int>(std::cout, ","));
//	//std::cout << std::endl;
// //   boost::copy( input | bounded(10), std::ostream_iterator<int>(std::cout, ","));
//	//std::cout << std::endl; 
// //   boost::copy( input | bounded(100), std::ostream_iterator<int>(std::cout, ","));
//	//std::cout << std::endl;
//
//	return 0;
//}